// RAP [bm] ToolTip ///******************************************************************************* // * Copyright (c) 2010 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // *******************************************************************************/ //package org.eclipse.ui.internal.handlers; // //import org.eclipse.ui.internal.testing.ContributionInfoMessages; // //import org.eclipse.core.commands.AbstractHandler; //import org.eclipse.core.commands.ExecutionEvent; //import org.eclipse.jface.layout.GridLayoutFactory; //import org.eclipse.jface.window.ToolTip; //import org.eclipse.osgi.util.NLS; //import org.eclipse.swt.SWT; //import org.eclipse.swt.graphics.Point; //import org.eclipse.swt.graphics.Rectangle; //import org.eclipse.swt.widgets.Composite; //import org.eclipse.swt.widgets.Control; //import org.eclipse.swt.widgets.Event; //import org.eclipse.swt.widgets.Shell; //import org.eclipse.swt.widgets.Table; //import org.eclipse.swt.widgets.TableItem; //import org.eclipse.swt.widgets.Text; //import org.eclipse.swt.widgets.Tree; //import org.eclipse.swt.widgets.TreeItem; //import org.eclipse.ui.handlers.HandlerUtil; //import org.eclipse.ui.internal.util.Util; //import org.eclipse.ui.testing.ContributionInfo; //import org.osgi.framework.Bundle; //import org.osgi.framework.FrameworkUtil; // ///** // * @since 3.6 // * // */ //public class SpyHandler extends AbstractHandler { // // public Object execute(ExecutionEvent event) { // Shell shell = HandlerUtil.getActiveShell(event); // if (shell != null) { // Control control = shell.getDisplay().getFocusControl(); // if (control != null) { // showTooltip(control); // } // } // return null; // } // // protected void showTooltip(Control control) { // ContributionInfo contributionInfo = null; // Point offset = new Point(0, 0); // while (control != null) { // if (control instanceof Table) { // Table table = (Table) control; // if (table.getSelectionCount() == 1) { // TableItem tableItem = table.getSelection()[0]; // contributionInfo = getContributionInfo(tableItem.getData(), // ContributionInfoMessages.ContributionInfo_TableItem); // if (contributionInfo != null) { // Rectangle bounds = tableItem.getBounds(); // offset = new Point(bounds.x, bounds.y); // break; // } // } // } else if (control instanceof Tree) { // Tree tree = (Tree) control; // if (tree.getSelectionCount() == 1) { // TreeItem treeItem = tree.getSelection()[0]; // contributionInfo = getContributionInfo(treeItem.getData(), // ContributionInfoMessages.ContributionInfo_TreeItem); // if (contributionInfo != null) { // Rectangle bounds = treeItem.getBounds(); // offset = new Point(bounds.x, bounds.y); // break; // } // } // } // String optionalElementType; // // // "force" a contribution info if we are at a shell // if (control instanceof Shell) // optionalElementType = ContributionInfoMessages.ContributionInfo_Window; // else // optionalElementType = null; // // contributionInfo = getContributionInfo(control.getData(), optionalElementType); // // if (contributionInfo != null) { // break; // } // control = control.getParent(); // } // if (contributionInfo == null) { // return; // } // doShowTooltip(control, offset, contributionInfo); // } // // /** // * @param control // * @param offset // * @param contributionInfo // */ // protected void doShowTooltip(Control control, Point offset, // final ContributionInfo contributionInfo) { // ToolTip toolTip = new ToolTip(control, ToolTip.NO_RECREATE, true) { // // protected Composite createToolTipContentArea(Event event, Composite parent) { // // Create the content area // Composite composite = new Composite(parent, SWT.NONE); // composite.setBackground(parent.getDisplay().getSystemColor( // SWT.COLOR_INFO_BACKGROUND)); // Text text = new Text(composite, SWT.READ_ONLY); // text.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND)); // String info = NLS.bind(ContributionInfoMessages.ContributionInfo_ContributedBy, // contributionInfo.getElementType(), contributionInfo.getBundleId()); // text.setText(info); // GridLayoutFactory.fillDefaults().margins(2, 2).generateLayout(composite); // return composite; // } // }; // toolTip.setHideOnMouseDown(false); // toolTip.setHideDelay(3000); // toolTip.show(offset); // } // // /** // * Returns a ContributionInfo for the given data object (typically, a data // * object associated with a widget). If the data object is a // * ContributionInfo, return it. If it can be adapted to ContributionInfo, // * return the result of the adaptation. Otherwise, if a non-null // * 'optionalElementType' string is given, return a contribution info based // * on it and the bundle that contains the given object's class. // */ // ContributionInfo getContributionInfo(Object data, String optionalElementType) { // if (data instanceof ContributionInfo) { // return (ContributionInfo) data; // } // ContributionInfo result = (ContributionInfo) Util.getAdapter(data, ContributionInfo.class); // if (optionalElementType != null && result == null && data != null) { // Bundle bundle = FrameworkUtil.getBundle(data.getClass()); // if (bundle != null) { // result = new ContributionInfo(bundle.getSymbolicName(), // optionalElementType != null ? optionalElementType // : ContributionInfoMessages.ContributionInfo_Unknown, null); // } // } // return result; // } //}